home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar 2004 April
/
Gamestar_61_2004-04_dvdb.iso
/
DVDStar
/
Editace
/
hltp.exe
/
{app}
/
Applications
/
QuArK
/
plugins
/
mapcaulk.py
< prev
next >
Wrap
Text File
|
2004-01-05
|
4KB
|
126 lines
""" QuArK - Quake Army Knife Bezier shape makers
"""
# THIS FILE IS PROTECTED BY THE GNU GENERAL PUBLIC LICENCE
# FOUND IN FILE "COPYING.TXT"
########################################################
#
# Caulk Plugin
# v1.0, Jan 2003
# works with Quark 6.3
#
#
# by tiglari@planetquake.com
#
# You may freely distribute modified & extended versions of
# this plugin as long as you give due credit to the QuArK
# Community. (It's free software, just like Quark itself.)
#
# Please notify bugs & improvements to tiglari@planetquake.com
# or http://groups.yahoo.com/group/quark-python
#
###
##########################################################
#$Header: /cvsroot/quark/runtime/plugins/mapcaulk.py,v 1.2 2003/01/31 20:17:44 tiglari Exp $
Info = {
"plug-in": "Caulk plugin",
"desc": "Caulking tthings",
"date": "Jan 26 2003",
"author": "tiglari",
"author e-mail": "tiglari@planetquake.com",
"quark": "Version 6.3"
}
#
# FIXME: this plugin should incorporate the contents of mb2caulk.py,
# which should be abolished, since the workings of this plugin are
# triggered by the presence of a CaulkTexture in the game config,
# whereas the other one is triggered less soundly, by the presence
# of patch-support. The change should be made in the main branch,
# but not in 6.3, at least yet.
#
import quarkx
import quarkpy.mapentities
import tagging
from quarkpy.maputils import *
#
# Caulk all-but-selected faces of poly
#
def polymenu(o, editor, oldmenu=quarkpy.mapentities.PolyhedronType.menu.im_func):
menu = oldmenu(o, editor)
caulk = quarkx.setupsubset()["DefaultTextureCaulk"]
if caulk is not None:
#
# try to find the texture-selection menu-item, in order
# to put the caulker after it
#
for item in menu:
try:
if item.text == "&Texture...":
texitem = item
except (AttributeError):
pass
def applyCaulk(m,o=o,editor=editor):
tagged = tagging.gettaggedfaces(editor)
#
# FIXME: gettaggedfaces should return [] if nothing is tagged
#
if tagged==None:
tagged=[]
debug('tagged: %s'%tagged)
sellist = editor.layout.explorer.sellist + tagged
undo = quarkx.action()
for face in o.faces:
debug('face: %s'%face.name)
if not face in sellist:
undo.setspec(face,'tex',CaulkTexture())
editor.ok(undo,'Caulk poly')
caulkItem = qmenu.item('Caulk non-selected',applyCaulk,"|Caulk texture faces that aren't selected or tagged")
#
# fancy Python list-management to put the item where we want it
#
menu.insert(menu.index(texitem)+1,caulkItem)
return menu
quarkpy.mapentities.PolyhedronType.menu=polymenu
def facemenu(o, editor, oldmenu=quarkpy.mapentities.FaceType.menu.im_func):
menu = oldmenu(o, editor)
caulk = quarkx.setupsubset()["DefaultTextureCaulk"]
if caulk is not None:
def applyCaulk(m, o=o, editor=editor):
undo = quarkx.action()
undo.setspec(o,'tex',CaulkTexture())
editor.ok(undo, 'caulk face')
for item in menu:
try:
debug(`item.label`)
except (AttributeError):
pass
texpop = findlabelled(menu,'texpop')
caulkItem = qmenu.item('Caulk face',applyCaulk,"|Put caulk texture on the face")
texpop.items.append(caulkItem)
return menu
quarkpy.mapentities.FaceType.menu=facemenu
#
# Log: #